import numpy as np
from scipy import misc
import scipy.io as scio
import matplotlib.pyplot as plt
import h5py
from sklearn.cluster import KMeans, MiniBatchKMeans, Birch, DBSCAN
with h5py.File('data.mat', 'r') as file:
image = np.array(list(file['ImageRaw']))
# dict = scio.loadmat('data')
data.shape
image.shape
data = np.reshape(image.T,(1000*1500,285))
data2 = np.reshape(image,(285,1000*1500)).T
image[:,:,1]
k_means = KMeans(init='k-means++', n_clusters=5, n_init=1)
k_means.fit(data)
k_means.fit(data2)
areaMap = np.array([[i,j] for i in range(1000) for j in range(1500)])
areaMap2 = np.array([[j,i] for i in range(1000) for j in range(1500)])
areaMap
for i in range(5):
plt.scatter(areaMap[k_means.labels_ == i,0], areaMap[k_means.labels_ == i,1], marker='.')
plt.show()
for i in range(5):
plt.scatter(areaMap2[k_means.labels_ == i,0], areaMap2[k_means.labels_ == i,1], marker='.')
plt.show()
k_means10 = KMeans(init='k-means++', n_clusters=10, n_init=1)
k_means10.fit(data2)
np.unique(k_means10.labels_)
for i in range(10):
plt.plot(areaMap[k_means10.labels_ == i,0], areaMap[k_means10.labels_ == i,1], '.', markersize=1)
plt.show()
for i in range(10):
plt.plot(areaMap2[k_means10.labels_ == i,0], areaMap2[k_means10.labels_ == i,1], '.', markersize=1)
plt.show()
k_means20 = KMeans(init='k-means++', n_clusters=20, n_init=1)
k_means20.fit(data2)
for i in range(20):
plt.plot(areaMap[k_means20.labels_ == i,0], areaMap[k_means20.labels_ == i,1], '.',markersize=1)
plt.show()
for i in range(20):
plt.plot(areaMap2[k_means20.labels_ == i,0], areaMap2[k_means20.labels_ == i,1], '.',markersize=1)
plt.show()
k_means30 = KMeans(init='k-means++', n_clusters=30, n_init=1)
k_means30.fit(data2)
for i in range(30):
plt.plot(areaMap[k_means30.labels_ == i,0], areaMap[k_means30.labels_ == i,1], '.',markersize=1)
plt.show()
plt.figure(figsize=(12,15))
plt.plot(areaMap[k_means30.labels_ == 7,0], areaMap[k_means30.labels_ == 7,1], 'g.',markersize=1)
plt.plot(areaMap[k_means30.labels_ == 24,0], areaMap[k_means30.labels_ == 24,1], 'g.',markersize=1)
plt.plot(areaMap[k_means30.labels_ == 10,0], areaMap[k_means30.labels_ == 10,1], 'b.',markersize=1)
plt.plot(areaMap[k_means30.labels_ == 5,0], areaMap[k_means30.labels_ == 5,1], 'y.',markersize=1)
plt.plot(areaMap[k_means30.labels_ == 14,0], areaMap[k_means30.labels_ == 14,1], 'k.',markersize=1)
plt.plot(areaMap[k_means30.labels_ == 26,0], areaMap[k_means30.labels_ == 26,1], 'k.',markersize=1)
plt.show()